/*
    线程分离：pthread_detach
    默认情况下，新创建的线程是可joinable的，线程退出后，需要对其进行pthread_join操作，否则无法释放资源。造成内存泄漏
    如果不关心线程的返回值，join是一种负担，这个时候，我们可以告诉系统，当线程退出时，自动释放线程资源。
*/


#include <iostream>
#include <unistd.h>

using namespace std;

void* threadRoutinue(void * args)
{
    // pthread_detach(pthread_self()); // 线程分离
    // ..
    int i = 0;
    while(i++ < 5)
    {
        cout << "I am a new thread, pid: " << getpid() << endl;
        sleep(1);
    }
    return nullptr;
}

int main()
{
    pthread_t tid;
    pthread_create(&tid, nullptr, threadRoutinue, nullptr);

    // 不用pthread_join了
    pthread_detach(tid);
    cout << "I am main thread, pid: " << getpid() << endl;
    sleep(1);
    return 0;
}